package com.hbnu.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hbnu.system.core.base.CommonPage;
import com.hbnu.system.model.dto.CheckBackDTO;
import com.hbnu.system.model.dto.WorkDTO;
import com.hbnu.system.model.entity.Work;
import com.hbnu.system.model.query.WorkPageQuery;

import java.io.IOException;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author ${author}
 * @since 2023-05-16
 */
public interface IWorkService extends IService<Work> {
    /**
     * 著作名查重
     *
     *
     * */
    boolean checkWorkname(String name);
    /**
     * 著作新增接口
     *
     * @param work
     * @return boolean
     */
    boolean addnewwork(Work work);

    WorkDTO getWorkDTOById(String id);
    /**
     *
     * 著作修改接口
     *
     * @param work
     * @return boolean
     */
    boolean updatework(Work work);
    /**
     * 著作删除接口
     *
     * @param id 著作id
     * @return boolean
     */
    boolean deletework(String id) throws IOException;

    /**
     * 通过主键获得Work
     *
     * @param   id
     * @return  Work
     *
     */
    Work getWork(String id);
    /**
     * 院级审核通过
     */
    Boolean collegeCheckPass(String token,String PID);

    /**
     * 院级审核打回
     */
    Boolean collegeCheckBack(String token,CheckBackDTO checkBackDTO);

    /**
     * 校级审核通过
     */
    Boolean schoolCheckPass(String token,String PID);

    /**
     * 校级审核打回
     */
    Boolean schoolCheckBack(String token,CheckBackDTO checkBackDTO);

    /**
     * 著作再度提交
     */
    Boolean ReCommitWork(String id);
    
    /**
     * 著作撤回
     * 只有在院级审核状态才能撤回，撤回后状态变为草稿
     */
    Boolean withdrawWork(String id);


    /**
     * 用户分页查看与自己相关的著作
     */
    CommonPage<Work> userGetRelateWork(WorkPageQuery workPageQuery);


    /**
     * 著作导出
     *
     * @param workPageQuery 查询条件
     * @return 导出分页数据
     */
    CommonPage<Work> export(WorkPageQuery workPageQuery);


}
